/*
 *    Copyright 2009-2012 the original author or authors.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

/**
 * Parses XML files to create a Configuration
 *
 *
 *
 *  XMLConfigBuilder会解析config.xml到Configuration配置类。解析的顺序如下：
 *  xml配置文件的顺序被mybatis-3-config.dtd文件约束
 *
 *  //解析配置
 *   private void parseConfiguration(XNode root) {
 *     try {
 *       //分步骤解析
 *       //issue #117 read properties first
 *       //1.properties
 *       propertiesElement(root.evalNode("properties"));
 *       //2.类型别名
 *       typeAliasesElement(root.evalNode("typeAliases"));
 *       //3.插件
 *       pluginElement(root.evalNode("plugins"));
 *       //4.对象工厂
 *       objectFactoryElement(root.evalNode("objectFactory"));
 *       //5.对象包装工厂
 *       objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
 *       //6.设置
 *       settingsElement(root.evalNode("settings"));
 *       // read it after objectFactory and objectWrapperFactory issue #631
 *       //7.环境
 *       environmentsElement(root.evalNode("environments"));
 *       //8.databaseIdProvider
 *       databaseIdProviderElement(root.evalNode("databaseIdProvider"));
 *       //9.类型处理器
 *       typeHandlerElement(root.evalNode("typeHandlers"));
 *       //10.映射器 被{@link org.apache.ibatis.builder.xml.XMLMapperBuilder}解析
 *       mapperElement(root.evalNode("mappers"));
 *     } catch (Exception e) {
 *       throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
 *     }
 *   }
 */
package org.apache.ibatis.builder.xml;
